home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
listings
/
v_13_12
/
colvin
/
runtime.h
< prev
Wrap
C/C++ Source or Header
|
1995-10-10
|
2KB
|
70 lines
////////////////////////////////////////////////////////////
// runtime.h
//
// Runtime library with patches to track working papers.
#ifndef RUNTIME_H
#define RUNTIME_H
#include <assert.h>
#include <errno.h>
#include <limits.h>
#include <malloc.h>
#include <stddef.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <iostreams.h>
// Boolean type.
typedef int bool;
// Exceptions.
struct exception { virtual ~exception(){} };
struct bad_alloc : exception {};
// Low level memory allocation functions.
void* allocate(size_t) throw();
void deallocate(void*) throw();
// Installable new handler.
typedef void (*new_handler)();
new_handler set_new_handler(new_handler) throw();
// Standard memory allocation operators.
void* operator new(size_t) throw(bad_alloc);
void* operator new[](size_t) throw(bad_alloc);
void operator delete(void*);
void operator delete[](void*);
// Default allocator.
template<class T> struct allocator {
void* allocate(size_t size) throw(bad_alloc) {
return ::operator new(n);
}
void deallocate(T* p) throw() { :: operator delete(p); }
};
// Allocate via an allocator.
template<class Allocator> inline void*
operator new(size_t n,Allocator& r) throw(bad_alloc) {
return r.allocate(n);
};
template<class Allocator> inline void*
operator new[](size_t n,Allocator& r) throw(bad_alloc) {
return r.allocate(n);
};
// Allocate in place.
inline void* operator new(size_t n,void* p) throw() {
return p;
}
inline void* operator new[](size_t n,void* p) throw() {
return p;
}
#endif